This invention relates to gaming machines such as video slot machines and video poker machines. More particularly, the present invention relates to methods of verifying the authenticity of gaming software executed on a gaming machine.
Typically, utilizing a master gaming controller, a gaming machine controls various combinations of devices that allow a player to play a game on the gaming machine and also encourage game play on the gaming machine. For example, a game played on a gaming machine usually requires a player to input money or indicia of credit into the gaming machine, indicate a wager amount, and initiate a game play. These steps require the gaming machine to control input devices, including bill validators and coin acceptors, to accept money into the gaming machine and recognize user inputs from devices, including touch screens and button pads, to determine the wager amount and initiate game play. After game play has been initiated, the gaming machine determines a game outcome, presents the game outcome to the player and may dispense an award of some type depending on the outcome of the game.
As technology in the gaming industry progresses, the traditional mechanically driven reel slot machines are being replaced with electronic counterparts having CRT, LCD video displays or the like and gaming machines such as video slot machines and video poker machines are becoming increasingly popular. Part of the reason for their increased popularity is the nearly endless variety of games that can be implemented on gaming machines utilizing advanced electronic technology. In some cases, newer gaming machines are utilizing computing architectures developed for personal computers. These video/electronic gaming advancements enable the operation of more complex games, which would not otherwise be possible on mechanical-driven gaming machines and allow the capabilities of the gaming machine to evolve with advances in the personal computing industry.
To implement the gaming features described above on a gaming machine using computing architectures utilized in the personal computer industry, a number of requirements unique to the gaming industry must be considered. One such requirement is the regulation of gaming software. Typically, within a geographic area allowing gaming, i.e. a gaming jurisdiction, a governing entity is chartered with regulating the games played in the gaming jurisdiction to insure fairness and to prevent cheating. Thus, in many gaming jurisdictions, there are stringent regulatory restrictions for gaming machines requiring a time consuming approval process of new gaming software and any software modifications to gaming software used on a gaming machine.
In the past, to implement the play of a game on a gaming machine, a monolithic software architecture has been used. In a monolithic software architecture, a single gaming software executable is developed. The single executable may be burnt onto an EPROM and then submitted to various gaming jurisdictions for approval. After the gaming software is approved, a unique signature can be determined for the gaming software stored on the EPROM using a method such as a CRC. Then, when a gaming machine is shipped to a local jurisdiction, the gaming software signature on the EPROM can be compared with an approved gaming software signature prior to installation of the EPROM on the gaming machine. The comparison process is used to ensure that approved gaming software has been installed on the gaming machine.
A disadvantage of a monolithic programming architecture is that a single executable that works for many different applications can be quite large. For instance, gaming rules may vary from jurisdiction to jurisdiction. Thus, either a single custom executable can be developed for each jurisdiction or one large executable with additional logic can be developed that is valid in many jurisdictions. The customization process may be time consuming and inefficient. For instance, upgrading the gaming software may require developing new executables for each jurisdiction, submitting the executables for reapproval, and then replacing or reprogramming EPROMs in each gaming machine.
Typically, personal computers use an object oriented software architecture where different software objects may be dynamically linked together prior to execution or even during execution to create many different combinations of executables that perform different functions. Thus, for example, to account for differences in gaming rules between different gaming jurisdictions, gaming software objects appropriate to a particular gaming jurisdiction may be linked at run-time which is simpler than creating a single different executable for each jurisdiction. Also, object oriented software architectures simplify the process of upgrading software since a software object, which usually represents only a small portion of the software, may be upgraded rather than the entire software. However, a disadvantage of object oriented software architectures is that they are not very compatible with EPROMs, which are designed for static executables. Thus, the gaming software regulation process described above using EPROM's may not be applicable to a gaming machine employing an object orientated software approach.
Further, in the past, gaming jurisdictions have required that EPROM based software to “run in place” on the EPROM and not from RAM i.e. the software may not be loaded into RAM for execution. Typically, personal computers load executables from a mass storage device, such as a hard-drive, to RAM and then the software is executed from RAM. Running software from an EPROM limits the size of the executable since the storage available on an EPROM is usually much less than the storage available on a hard-drive. Also, this approach is not generally compatible with PC based devices that load software from a mass storage device to RAM for execution.
In view of the above, methods and apparatus for regulating and verifying gaming software stored in and executed from RAM using object oriented software architectures are needed for gaming machines using these architectures.